﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using com.ReinforceLab.AudioModem.SignalTrace;

namespace com.ReinforceLab.AudioModem.LinkLayer
{
    /// <summary>
    /// 復調クラス
    ///     動作：復調、入力信号と同じサンプリングレートの復調信号を生成
    ///     動作条件：オーバサンプル8でのみ    
    /// </summary>
    /*class BitDemodulator
    {
        #region Variables
        int _prevSig;
        bool _wasNarrowPulse;
        int _pulseWidth;
        #endregion

        #region Constructor
        public BitDemodulator()
        {
            _prevSig = 0;
            _wasNarrowPulse = false;
            _pulseWidth = 0;
        }
        #endregion

        #region Public methods
        /// <summary>
        /// 信号波形の復号処理
        /// 0 no carrier
        /// 1 logic '1' 
        /// 2 logic '0'
        /// </summary>
        /// <param name="waveform"></param>
        public int[] Demodulate(int[] waveform)            
        {
            var demod_sig = new List<int>();
            foreach (var sig in waveform)
            {
                _pulseWidth++;
                // is rising edge?
                if (_prevSig != sig && _prevSig == -1)
                {
                    if (_pulseWidth < 6)
                    {
                        demod_sig.Add(1);
                    }
                    else
                    {
                        if (_pulseWidth < 9)
                            demod_sig.Add(2);
                        else
                            demod_sig.Add(0);
                    }                    
                    _pulseWidth = 0;
                }
                _prevSig = sig;
            }

            return demod_sig.ToArray();
        }
        #endregion
    }
      */
}
